package com.marmot.cloud.framework.utils;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil;

import java.io.File;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 【工具】Maven库中.lastUpdated文件自动清除工具
 * <p>
 * 说明：提供了常用的Maven清除jar等功能。
 * </p>
 *
 * @author shenpeng
 */
public class MavenUtil {

    /**
     * Maven本地库所在路径
     */
    private static final String MAVEN_REPO_PATH;
    /**
     * 文件后缀
     */
    private static final String FILE_SUFFIX;

    static {
        MAVEN_REPO_PATH = "/Users/shenpeng/.m2";
        FILE_SUFFIX = "lastUpdated";
    }

    /**
     * 清理所有.lastUpdated文件(默认路径)
     */
    public static void delLastUpdated() {
        delLastUpdated(MAVEN_REPO_PATH);
    }

    /**
     * 清理所有.lastUpdated文件(指定路径)
     *
     * @param mavenRepoPath 需要清理的路径
     */
    public static void delLastUpdated(String mavenRepoPath) {
        System.out.println("开始清理" + mavenRepoPath + "路径下的无效文件...");
        long time = DateUtil.current();
        File mavenRep = new File(mavenRepoPath);
        if (!mavenRep.exists()) {
            System.out.println("本地库文件夹不存在.");
            return;
        }

        List<File> files= FileUtil.loopFiles(mavenRep).stream().filter(vo->vo.isFile()&& StrUtil.endWith(vo.getName(),FILE_SUFFIX)).collect(Collectors.toList());
        files.forEach(vo->{
            if (vo.delete()) {
                System.out.println("文件: [" + vo.getName() + "] 已经被删除.");
            }
        });
        System.out.println("清理无效文件完成,共用时" + ((DateUtil.current() - time) * 0.001) + "秒。");
    }

    public static void main(String[] args) {
        MavenUtil.delLastUpdated();
    }

}
